
<!DOCTYPE html>
<html lang="zh-CN">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
    <meta name="format-detection" content="telephone=no">
    <title></title>
    <link rel="stylesheet" href="css/form.css">
    <script src="js/vue.js"></script>
    <script src="js/jquery-1.10.2.js"></script>
    <script src="js/layer/layer.js"></script>
</head>

<body>
    <div id="app">
        <div class="container">
            <!-- 头部图片 -->
            <img :src="pageData.globalSettings.headerImage" class="header-img">

            <div class="form-container"
                :style="{ backgroundColor: pageData.formSettings.backgroundColor, padding: pageData.formSettings.padding + 'px', borderRadius: pageData.formSettings.borderRadius + 'px' }">
                <form @submit.prevent="submitForm">
                    <!-- 动态生成表单元素 -->
                    <div class="form-group" v-for="element in pageData.formElements" :key="element.id">
                        <!-- 文本框 -->
                        <div v-if="element.type === 'text' || element.type === 'name'">
                            <label class="form-label">{{ element.settings.label }}</label>
                            <input type="text" class="form-input" :placeholder="element.settings.placeholder"
                                v-model="formData[element.settings.fieldName]" :name="element.settings.fieldName"
                                :style="{ backgroundColor: pageData.formSettings.inputBgColor, borderColor: pageData.formSettings.inputBorderColor, borderRadius: pageData.formSettings.inputBorderRadius + 'px' }">
                        </div>

                        <!-- 年龄输入框 -->
                        <div v-else-if="element.type === 'age'">
                            <label class="form-label">{{ element.settings.label }}</label>
                            <input type="number" class="form-input" :placeholder="element.settings.placeholder"
                                v-model="formData[element.settings.fieldName]" :name="element.settings.fieldName"
                                :style="{ backgroundColor: pageData.formSettings.inputBgColor, borderColor: pageData.formSettings.inputBorderColor, borderRadius: pageData.formSettings.inputBorderRadius + 'px' }">
                        </div>

                        <!-- 手机号输入框 -->
                        <div v-else-if="element.type === 'phone'">
                            <label class="form-label">{{ element.settings.label }}</label>
                            <input type="number" class="form-input" :placeholder="element.settings.placeholder"
                                v-model="formData[element.settings.fieldName]" :name="element.settings.fieldName"
                                :style="{ backgroundColor: pageData.formSettings.inputBgColor, borderColor: pageData.formSettings.inputBorderColor, borderRadius: pageData.formSettings.inputBorderRadius + 'px' }">
                        </div>

                        <!-- 验证码 -->
                        <div v-else-if="element.type === 'verify'">
                            <label class="form-label">{{ element.settings.label }}</label>
                            <div class="sms-group">
                                <input type="number" class="form-input sms-input"
                                    :placeholder="element.settings.placeholder"
                                    v-model="formData[element.settings.fieldName]" :name="element.settings.fieldName"
                                    :style="{ backgroundColor: pageData.formSettings.inputBgColor, borderColor: pageData.formSettings.inputBorderColor, borderRadius: pageData.formSettings.inputBorderRadius + 'px' }">
                                <button type="button" class="sms-btn" @click="getSmsCode"
                                    :style="{ backgroundColor: element.settings.buttonColor || '#1890ff',color: element.settings.buttonTextColor || 'white',borderRadius: element.settings.buttonBorderRadius + 'px' }">{{
                                    smsButtonText
                                    }}</button>
                            </div>
                        </div>

                        <!-- 下拉选择框 -->
                        <div
                            v-else-if="element.type === 'select' || element.type === 'city' || element.type === 'amount'">
                            <label class="form-label">{{ element.settings.label }}</label>
                            <div class="select-wrapper">
                                <select class="form-select" v-model="formData[element.settings.fieldName]"
                                    :name="element.settings.fieldName"
                                    :style="{ backgroundColor: pageData.formSettings.inputBgColor, borderColor: pageData.formSettings.inputBorderColor, borderRadius: pageData.formSettings.inputBorderRadius + 'px' }">
                                    <option value="">{{element.settings.placeholder}}</option>
                                    <option v-for="option in element.settings.options" :key="option.value"
                                        :value="option.value"
                                        :selected="option.value === element.settings.defaultValue">
                                        {{ option.label }}
                                    </option>
                                </select>
                            </div>
                        </div>

                        <!-- 单选框 -->
                        <div v-else-if="element.type === 'radio'">
                            <label class="form-label">{{ element.settings.label }}</label>
                            <div class="radio-group">
                                <div class="radio-option" v-for="option in element.settings.options"
                                    :key="option.value">
                                    <input type="radio" :id="'radio-' + option.value" class="radio-input"
                                        v-model="formData[element.settings.fieldName]"
                                        :name="element.settings.fieldName" :value="option.value">
                                    <label :for="'radio-' + option.value" class="radio-label"
                                        :style="{  borderColor: pageData.formSettings.inputBorderColor, borderRadius: pageData.formSettings.inputBorderRadius + 'px' }">{{
                                        option.label }}</label>
                                </div>
                            </div>
                        </div>

                        <!-- 性别选择 -->
                        <div v-else-if="element.type === 'gender'">
                            <label class="form-label">{{ element.settings.label }}</label>
                            <div class="gender-selector">
                                <div class="gender-option">
                                    <input type="radio" id="gender-male" class="gender-radio"
                                        v-model="formData[element.settings.fieldName]"
                                        :name="element.settings.fieldName" value="男">
                                    <label for="gender-male" class="gender-label"
                                        :style="{  borderColor: pageData.formSettings.inputBorderColor, borderRadius: pageData.formSettings.inputBorderRadius + 'px' }">男</label>
                                </div>
                                <div class="gender-option">
                                    <input type="radio" id="gender-female" class="gender-radio"
                                        v-model="formData[element.settings.fieldName]"
                                        :name="element.settings.fieldName" value="女">
                                    <label for="gender-female" class="gender-label"
                                        :style="{  borderColor: pageData.formSettings.inputBorderColor, borderRadius: pageData.formSettings.inputBorderRadius + 'px' }">女</label>
                                </div>
                            </div>
                        </div>

                        <!-- 多选框 -->
                        <div v-if="element.type === 'checkbox'">
                            <label class="form-label">{{ element.settings.label }}</label>
                            <div class="checkbox-group">
                                <div class="checkbox-option" v-for="(option, index) in element.settings.options"
                                    :key="index">
                                    <!-- 字段多选模式（single-field） -->
                                    <template v-if="element.settings.mode === 'single-field'">
                                        <input type="checkbox" :id="'checkbox-' + element.id + '-' + index"
                                            class="checkbox-input" :value="option.value"
                                            v-model="formData[element.settings.fieldName]"
                                            :name="element.settings.fieldName">
                                        <label :for="'checkbox-' + element.id + '-' + index" class="checkbox-label"
                                            :style="{ borderColor: pageData.formSettings.inputBorderColor, borderRadius: pageData.formSettings.inputBorderRadius + 'px' }">
                                            {{ option.label }}
                                        </label>
                                    </template>

                                    <!-- 字段单选模式（multi-field） -->
                                    <template v-else>
                                        <input type="checkbox" :id="'checkbox-' + element.id + '-' + index"
                                            class="checkbox-input" :name="option.fieldName"
                                            :checked="formData[element.settings.fieldName][option.fieldName]"
                                            @change="updateMultiFieldCheckbox(element.settings.fieldName, option.fieldName, $event)">
                                        <label :for="'checkbox-' + element.id + '-' + index" class="checkbox-label"
                                            :style="{ borderColor: pageData.formSettings.inputBorderColor, borderRadius: pageData.formSettings.inputBorderRadius + 'px' }">
                                            {{ option.label }}
                                        </label>
                                    </template>
                                </div>
                            </div>
                        </div>

                        <!-- 隐私协议（带勾选框） -->
                        <div v-else-if="element.type === 'agreement-checkbox'">
                            <div class="agree-group" :style="{ color: element.settings.textColor || '#666' }"
                                @click="agreementOpen">
                                <input type="checkbox" v-model="formData[element.settings.fieldName]"
                                    :name="element.settings.fieldName" id="agreeProtocol">
                                <label for="agreeProtocol">{{ element.settings.text }}</label>
                            </div>
                        </div>

                        <!-- 提交按钮 -->
                        <div v-else-if="element.type === 'button'">
                            <button type="submit" class="submit-btn"
                                :style="{ backgroundColor: element.settings.buttonColor || '#1890ff',color: element.settings.buttonTextColor || 'white',borderRadius: element.settings.buttonBorderRadius + 'px' }">{{
                                element.settings.buttonText }}</button>
                        </div>
                    </div>
                </form>
            </div>

            <!-- 底部图片 -->
            <img :src="pageData.globalSettings.footerImage" class="footer-img">
        </div>
    </div>

    <script>
        const pageData = {"globalSettings":{"pageTitle":"test","pageNotes":"","backgroundColor":"#1890ff","headerImage":"https://www.candyblog.cn/wp-content/uploads/2025/07/1753769329-0395724001695177085-219x300.jpg","footerImage":"https://www.candyblog.cn/wp-content/uploads/2025/07/1753769367-0309919001695177095-300x48.jpg"},"formSettings":{"backgroundColor":"#ffffff","padding":20,"borderRadius":0,"labelColor":"#666","inputBgColor":"#fffafa","inputBorderColor":"#ffe0e0","inputBorderRadius":"0"},"formElements":[{"id":1,"type":"name","settings":{"fieldName":"name","label":" ","placeholder":"请输入您的姓名","validation":{"required":true,"pattern":{},"message":"请输入2-6个汉字"}}},{"id":2,"type":"gender","settings":{"fieldName":"sex","label":" ","selectedColor":"#62cdfe","unselectedColor":"#ffffff","selectedBorderColor":"#000000","unselectedBorderColor":"#fbdada","validation":{"required":true,"message":"请选择性别"}}},{"id":3,"type":"phone","settings":{"fieldName":"mobile","label":" ","placeholder":"请输入手机号","validation":{"required":true,"pattern":{},"message":"请输入有效的手机号"}}},{"id":8,"type":"select","settings":{"fieldName":"amount","label":" ","placeholder":"请选择金额","defaultValue":"","optionsText":"1000|1000\n3000|2000\n3000|3000","options":[{"label":"1000","value":"1000"},{"label":"3000","value":"2000"},{"label":"3000","value":"3000"}],"validation":{"required":true,"message":"请选择一个选项"},"selectedValues":[]}},{"id":4,"type":"verify","settings":{"fieldName":"code","label":" ","placeholder":"请输入验证码","buttonText":"获取验证码","buttonColor":"#1890ff","buttonTextColor":"#ffffff","buttonBorderRadius":4,"validation":{"required":true,"pattern":{},"message":"请输入4-6位数字验证码"}}},{"id":6,"type":"age","settings":{"fieldName":"age","label":" ","placeholder":"请输入您的年龄","min":18,"max":70,"validation":{"required":true,"pattern":{},"message":"请输入有效的年龄"}}},{"id":5,"type":"city","settings":{"fieldName":"city","label":" ","placeholder":"请选择城市","defaultValue":"","optionsText":"上海|上海\n杭州|杭州\n武汉|武汉\n北京|北京","options":[{"label":"上海","value":"上海"},{"label":"杭州","value":"杭州"},{"label":"武汉","value":"武汉"},{"label":"北京","value":"北京"}],"validation":{"required":true,"message":"请选择一个城市"},"selectedValues":[]}},{"id":1,"type":"checkbox","settings":{"fieldName":"checkbox_2","label":"资质选择","mode":"multi-field","selectedValuesText":"","selectedValues":[],"optionsText":"有车|0|car\n有房|0|house\n有公积金|0|gjj","options":[{"label":"有车","value":"0","fieldName":"car"},{"label":"有房","value":"0","fieldName":"house"},{"label":"有公积金","value":"0","fieldName":"gjj"}],"selectedColor":"#e6f7ff","unselectedColor":"#ffffff","selectedBorderColor":"#1890ff","unselectedBorderColor":"#d9d9d9","car":false,"house":false,"gjj":false}},{"id":1,"type":"agreement-checkbox","settings":{"fieldName":"agreement","text":"我已表示阅读并同意《用户服务及隐私协议》","textColor":"#666","validation":{"required":true,"message":"请阅读用户协议"}}},{"id":13,"type":"button","settings":{"buttonText":"测测你能借多少","buttonColor":"#1890ff","buttonTextColor":"#ffffff","buttonBorderRadius":4}}]};

        new Vue({
            el: '#app',
            data: {
                pageData: {},
                formData: {},
                countdown: 0,
                smsButtonText: '获取验证码',
            },
            methods: {
                agreementOpen() {
                    let html = document.getElementById("dkAgreeamentContent").innerHTML;
                    layer.open({
                        title: [
                            '用户服务及隐私协议',
                            'background-color:#0a55a6; color:#fff;'
                        ]
                        , anim: 'up'
                        , content: `<div id="dkAgreeamentContent">${html}</div>`
                        , btn: ['确认']
                    });
                },

                // 更新多选框状态（字段单选模式）
                updateMultiFieldCheckbox(fieldName, optionFieldName, event) {
                    if (!this.formData[fieldName]) {
                        this.$set(this.formData, fieldName, {});
                    }
                    this.$set(this.formData[fieldName], optionFieldName, event.target.checked);
                },

                // 获取验证码
                getSmsCode() {
                    // 先验证手机号是否有效
                    const phoneElement = this.pageData.formElements.find(el => el.type === 'phone');
                    if (phoneElement) {
                        const phoneValue = this.formData[phoneElement.settings.fieldName] || '';
                        const phoneRegex = /^1[3-9]\d{9}$/;

                        if (!phoneRegex.test(phoneValue)) {
                            layer.open({
                                content: `请输入有效的手机号码`
                                , skin: 'msg'
                                , time: 2
                            });
                            return;
                        }
                    }

                    $.ajax({
                        method: 'POST',
                        url: '/h5.php?c=index&a=send_sms',
                        data: {
                            mobile: this.formData['mobile'] || '',
                        },
                        success: function (data) {
                            layer.open({
                                content: data.info
                                , skin: 'msg'
                                , time: 2
                            });
                        }
                    })

                    if (this.countdown > 0) {
                        return;
                    }

                    this.countdown = 60;
                    this.smsButtonText = `${this.countdown}秒后重试`;

                    const timer = setInterval(() => {
                        this.countdown--;
                        this.smsButtonText = `${this.countdown}秒后重试`;

                        if (this.countdown <= 0) {
                            clearInterval(timer);
                            this.smsButtonText = '获取验证码';
                        }
                    }, 1000);
                },

                validateForm() {
                    let isValid = true;
                    let errorMessages = [];

                    this.pageData.formElements.forEach(element => {

                        if (element.settings.validation) {
                            const validation = element.settings.validation;
                            const value = this.getFormFieldValue(element.type, element.settings.fieldName);

                            if (validation.required) {
                                let isEmpty = false;

                                if (element.type === 'checkbox') {
                                    if (element.settings.mode === 'single-field') {
                                        // 字段多选模式 - 检查数组是否为空
                                        isEmpty = value.length === 0;
                                    } else {
                                        // 字段单选模式 - 检查对象中是否有true值
                                        isEmpty = !Object.values(value).some(v => v);
                                    }
                                } else if (element.type === 'agreement-checkbox') {
                                    isEmpty = !value;
                                } else {
                                    isEmpty = value === '' || value === undefined || value === null;
                                }

                                if (isEmpty) {
                                    errorMessages.push(validation.message || `请填写${element.settings.label}`);
                                    isValid = false;
                                    return;
                                }
                            }

                            if (element.type === 'age') {
                                const numValue = Number(value);

                                if (isNaN(numValue)) {
                                    errorMessages.push(validation.message || `请输入有效的${element.settings.label}`);
                                    isValid = false;
                                    return;
                                }

                                if (element.settings.min !== undefined && numValue < element.settings.min) {
                                    errorMessages.push(`年龄不能小于${element.settings.min}岁`);
                                    isValid = false;
                                }

                                if (element.settings.max !== undefined && numValue > element.settings.max) {
                                    errorMessages.push(`年龄不能大于${element.settings.max}岁`);
                                    isValid = false;
                                }
                            }
                        }
                    });

                    if (!isValid && errorMessages.length > 0) {
                        layer.open({
                            content: `${errorMessages.join('\n<br/>')}`,
                            skin: 'msg',
                            time: 2
                        });
                    }

                    return isValid;
                },

                getFormFieldValue(type, fieldName) {
                    const value = this.formData[fieldName];

                    if (type === 'checkbox') {
                        return value || (this.pageData.formElements.find(el => el.settings.fieldName === fieldName)?.settings.mode === 'single-field' ? [] : {});
                    }

                    if (type === 'age') {
                        return value === '' ? '' : Number(value);
                    }

                    return value || '';
                },

                submitForm() {
                    this.initFormData();

                    if (this.validateForm()) {
                        // 落地页固定参数
                        const data = {
                            adid: "",
                            creativeid: "",
                            creativetype: "",
                            clickid: "",
                            qz_gdt: "",
                            gdt_vid: "",
                            openid: "",
                            bd_vid: "",
                            channel_name: "test",
                            header: "",
                            callback: "",
                        };

                        // 遍历对象，展开嵌套的 Object 类型属性
                        const flattenObject = (obj) => {
                            const result = { ...obj }; // 复制原始对象
                            Object.keys(obj).forEach(key => {
                                const value = obj[key];
                                // 检查是否是 Object 类型（排除 null 和数组）
                                if (typeof value === 'object' && value !== null && !Array.isArray(value)) {
                                    delete result[key]; // 删除原来的嵌套对象
                                    Object.assign(result, value); // 将嵌套对象的键值对合并到外层
                                }
                            });
                            return result;
                        };

                        // 合并表单数据和其他数据
                        let newData = flattenObject(this.formData);
                        newData = {
                            ...newData,
                            ...data
                        }

                        // 遍历对象，转换布尔值为 0/1
                        const convertBooleansToNumbers = (obj) => {
                            const result = { ...obj }; // 复制原始对象
                            Object.keys(result).forEach(key => {
                                const value = result[key];
                                if (typeof value === 'boolean') {
                                    result[key] = value ? '有' : '无'; // true -> 1, false -> 0
                                }
                            });
                            return result;
                        };
                        
                        let datas = convertBooleansToNumbers(newData);
                        // 删除不需要的字段
                        delete datas.agreement;
                        delete datas.undefined;

                        $.ajax({
                            method: 'POST',
                            url: '',
                            data: datas,
                            success: function (response) {
                                console.log(response);
                                if (response.status === 1) {
                                    layer.open({
                                        content: response.info || '提交成功',
                                        skin: 'msg',
                                        time: 2
                                    });
                                    // 提交成功后可以跳转到其他页面或执行其他操作
                                    setTimeout(() => {
                                        window.location.href = '/';
                                    }, 1500);
                                } else {
                                    layer.open({
                                        content: response.info || '提交失败，请稍后再试',
                                        skin: 'msg',
                                        time: 2
                                    });
                                }
                            },
                            error: function () {
                                layer.open({
                                    content: '网络错误，请稍后再试',
                                    skin: 'msg',
                                    time: 2
                                });
                            }
                        });
                    }
                },

                initFormData() {
                    if (Object.keys(this.formData).length === 0) {
                        this.pageData.formElements.forEach(element => {
                            this.$set(this.formData, element.settings.fieldName,
                                this.getDefaultValueForField(element));
                        });
                    }
                },

                getDefaultValueForField(element) {
                    switch (element.type) {
                        case 'gender':
                            return '男';
                        case 'agreement-checkbox':
                            return false;
                        case 'checkbox':
                            if (element.settings.mode === 'single-field') {
                                // 字段多选模式 - 使用数组存储选中的值
                                return [];
                            } else {
                                // 字段单选模式 - 使用对象存储每个选项的选中状态
                                const checkboxValues = {};

                                // 只处理options中的字段
                                if (element.settings.options) {
                                    element.settings.options.forEach(option => {
                                        const fieldName = option.fieldName;
                                        // 根据option.value设置初始值
                                        const initialValue = option.value === 'true' ||
                                            option.value === '1' ||
                                            option.value === true;
                                        this.$set(checkboxValues, fieldName, initialValue);
                                    });
                                }

                                return checkboxValues;
                            }
                        case 'select':
                        case 'city':
                        case 'amount':
                            // 如果有默认值则使用默认值，否则返回空字符串
                            return element.settings.defaultValue || '';
                        case 'age':
                            // 年龄字段返回空字符串，由输入框处理转换
                            return '';
                        case 'phone':
                        case 'verify':
                        case 'text':
                        case 'name':
                            // 文本类字段返回空字符串
                            return '';
                        case 'button':
                            // 按钮不需要存储值
                            return null;
                        default:
                            // 未知类型返回空字符串
                            return '';
                    }
                },
                initFormData() {
                    if (Object.keys(this.formData).length === 0) {
                        this.pageData.formElements.forEach(element => {
                            this.$set(this.formData, element.settings.fieldName,
                                this.getDefaultValueForField(element));
                        });
                    }
                }
            },
            created() {
                // 初始化页面数据
                this.pageData = pageData;
                this.initFormData();
                // 设置页面标题
                document.title = this.pageData.globalSettings.pageTitle;
            }
        });
    </script>

            <div id="dkAgreeamentContent" style="display: none" >

    <b>导言</b><br>
    尊敬的用户（简称“用户”或“您”），本协议由深圳市味道食品有限公司（简称“我们”）和您签订。我们将依照本协议内容为您提供服务。本协议有助于您了解我们为您提供的服务内容及您的权利和义务，请您务必仔细阅读，您只有完全同意本协议的全部内容，才能使用相应服务。您在提交过程中点击"同意用户服务协议"按钮即表示您已仔细阅读并明确同意遵守本注册协议以及经参引而并入其中的所有条款、政策以及指南，并受该等规则的约束（合称"本服务协议"），您一经注册或使用本服务即视为对本协议全部条款已充分理解并完全接受，本协议在我们与您之间成立并生效。<br>
    我们可能根据法律法规的要求或业务运营的需要，对本协议不时进行修改。除非另有规定，否则任何变更或修改将在修订内容发布之时立即生效，您对本服务的使用、继续使用将表明您接受表示您接受变更后的协议，变更后的协议因您继续使我们提供服务的行为而生效，同时，您将遵循变更后的协议继续使用我们提供的服务。为了便于您了解适用于您使用我们服务的条款和条件，我们将在本网站上发布我们对本协议的修改，您应不时地审阅本协议以及经参引而并入其中的其他规则。<br>
    一、服务内容<br>
    1.1本协议所指服务是金融贷款居间信息服务，即由我们根据您提交的贷款需求申请及个人信息，为您推荐匹配的贷款信息。具体服务内容由我们根据实际情况提供并不时更新，包括但不限于信息、图片、文章、评论、链接等，我们将定期或不定期根据用户的意愿以电子邮件、短信、电话等方式为用户提供活动信息，并向用户提供相应服务。我们对提供的服务拥有最终解释权。<br>
    1.1.1 “用户”是指使用本服务的使用人，在本协议中更多地称为“您”。<br>
    1.2本协议项下的服务是为您提供居间贷款信息服务。您在最终选择贷款产品及接受第三方贷款服务前请仔细阅读相关信息，自主参与交易并承担交易风险，我们对此不承担任何法律责任。您的贷款申请是否通过第三方的审批与您个人资信情况相关，平台对此不承担任何责任。<br>
    1.3本服务仅供个人用户使用。除我们书面同意，您或其他用户均不得将本服务的任何信息用于商业目的。为方便您使用本服务，您通过网络页面点击或以其他形式确认《用户服务及隐私协议》的，即视为您已充分理解其中所有条款以及经参引而并入其中的政策以及指南（合称"本协议"），并同意与我们订立本协议且接受本协议的约束。您使用本务即视为您已阅读并同意受本协议的约束。请您保证您拥有符合订立相关合同的完全民事权利能力及完全民事行为能力。如您为无民事行为能力人（不满8周岁的未成年人或不能辨认自己行为的精神病人）或为限制民事行为能力人（8周岁以上的未成年人或不能完全辨认自己行为的精神病人），我们原则上不建议非完全民事行为能力人使用本网站服务，如您需使用，请告知您的监护人，并在您监护人的指导下阅读本协议，并在监护人监督及授权下谨慎使用本网站服务。 若您是中华人民共和国行政管辖区域以外的用户，您还需同时遵守您所属国家或地区的法律，且您确认，订立并履行本协议不受您所属、所居住或开展经营活动或其他业务的国家或地区法律法规的限制。<br>
    二、信息验证<br>
    2.1您在使用本服务时可能需要收取一个验证码。我们特别提醒您应妥善保管您的手机号和验证码。切勿透露给其他人，为了及时有效地验证您的信息（包括但不限于身份信息）和持续、便捷地为您提供服务，根据法律法规及监管规定或我们认为有需要时，您同意我们可以把您的信息提供给第三方，也同意第三方可以把您的信息提供给我们，以便我们进行验证。<br>
    2.2  身份要素是我们识别您身份的依据，请您务必妥善保管。使用身份要素进行的任何操作、发出的任何指令均视为您本人做出。因您的原因造成的账户、密码等信息被冒用、盗用或非法使用，由此引起的一切风险、责任、损失、费用等应由您自行承担。因您保管不善可能导致遭受盗号或密码失窃，责任由您自行承担。<br>
    2.3 您在决定申请贷款及其他金融服务前，您清楚并理解进行金融交易将面对市场波动的风险，因此，您应对贷款服务的产品、服务信息进行全面细致的了解，审慎地评估风险，独立自主做出决定。<br>
    2.4 我们不对您的任何行为及产生的后果提供任何明示、默示的担保。我们向您提供的各种信息和资料仅为参考，您自行承担金融交易风险。<br>
    三、知识产权<br>
    3.1 本网页所载商标、徽号和服务标志及我们平台网站的结构、网页设计、文字、程序及代码、内容、图像等数据的所有版权、专利权、知识产权及其他权属均属我们所有。<br>
    3.2 本网站所载资料受版权保护。除非经我们书面同意及许可，不得修改、复制、转载、传播或者以其他方式作为商业或公共用途。<br>
    3.3 尊重知识产权是您应尽的义务，如有违反，您应承担损害赔偿责任。<br>
    四、隐私保护和信息提供<br>
    4.1 隐私保护 <br>
    4.1.1为确保您对我们处理个人信息资料工作有充分信心，您务必详细阅读及理解本条文。无论您将来是否与我们达成合作，您都要向我们表明您的接受、同意、承诺和确认：<br>
    （1）您是在自愿的情况下向我们披露个人资料；<br>
    （2）您会遵守本政策的全部条款和限制；<br>
    （3）您同意我们通过您点击本页面、在本页面上申请或使用我们提供的服务的方式收集您的信息；<br>
    （4）您同意我们随时对本条款所做的任何修改；<br>
    （5）您同意我们的分公司、附属公司、雇员、关联方、合作方就您可能适合的贷款产品、信息和服务等与您联络。<br>
    4.1.2您在访问、使用本服务时，必须提供本人真实的个人信息，且您应该根据实际变动情况及时更新个人信息。保护用户隐私是我们的重点原则，我们通过各种技术手段和强化内部管理等办法提供隐私保护服务功能，充分保护您的个人信息安全，您知晓并同意，我们为提供本协议项下的服务，有权将您的身份要素向相对方或第三方提供。<br>
    4.1.3我们不负责审核您提供的个人信息的真实性、准确性或完整性，因信息不真实、不准确或不完整而引起的任何问题及其后果，由您自行承担，且您应保证我们免受由此而产生的任何损害或责任。若我们发现您提供的个人信息是虚假、不准确或不完整的，我们有权自行决定终止向您提供服务。<br>
    4.1.4您已明确授权，为提供服务、履行协议、解决争议、保障交易安全等目的，我们对您提供的、我们自行收集的及通过第三方收集的您的个人信息、您申请服务时的相关信息、您在使用服务时储存在本网站的非公开内容以及您的其他个人资料（以下简称“个人资料”）享有留存、整理加工、使用和披露的权利，具体方式包括但不限于：<br>
    （1）出于为您提供服务的需要在本网站及关联公司公示您的个人资料；<br>
    （2）由人工或自动程序对您的个人资料进行获取、评估、整理、存储；<br>
    （3）使用您的个人资料以改进本网站的设计和推广；<br>
    （4）使用您提供的联系方式与您联络并向您传递有关服务和管理方面的信息；<br>
    （5）对您的个人资料进行分析整合并向为您提供服务的第三方提供为完成该项服务必要的信息。<br>
    （6）在您违反与我们或我们的其他用户签订的协议时，披露您的个人资料及违约事实，将您的违约信息写入黑名单并与必要的第三方共享数据，以供我们及第三方审核、追索之用。<br>
    （7） 您知晓并同意我们有义务根据有关法律要求向司法机关和政府部门提供您的个人信息。<br>
    （8）其他必要的使用及披露您个人资料的情形。<br>
    您已明确同意本条款不因您终止使用服务而失效。如因我们行使本条款项下权利使您遭受损失，我们对该等损失免责。<br>
    4.2信息提供<br>
    4.2.1您向我们提供的信息<br>
    您知悉，您向具体提供贷款产品的机构提供的银行账户、密码、私钥等信息内容并不存储或同步至我们的服务器。我们不提供找回您的账户、密码、私钥等的服务。若您愿意使用我们提供的服务，您需要提供以下的信息：<br>
    （1）身份信息<br>
     该信息可以帮助我们验证您是否具备资格使用本平台服务，包括但不限于您的名字、所在城市、年龄、公积金情况、住房情况。<br>
    （2）服务信息<br>
     该信息帮助我们与您联系并顺利为您提供服务，包括但不限于您的电话号码、传真号码、有效的电子邮件地址、邮寄地址等（以下合称为“服务信息”）。<br>
    4.2.2我们自动收集的信息<br>
    本网站提供服务时，可能会收集、储存和使用与您有关的信息。如果您不提供相关信息，可能无法享受我们提供的某些服务，或者无法达到相关服务拟达到的效果。<br>
    4.2.2.1 日志信息，指您使用我们的服务时，系统可能通过cookies、web beacon或其他方式自动采集的技术信息，包括：<br>
    ● 设备或软件信息，例如您的移动设备、网页浏览器或用于接入我们服务的其他程序所提供的配置信息、您的IP地址和移动设备所用的版本和设备识别码；<br>
    ● 设备或软件信息，例如您的移动设备、网页浏览器或用于接入我们服务的其他程序所提供的配置信息、您的IP地址和移动设备所用的版本和设备识别码；<br>
    ● 在使用我们服务时搜索或浏览的信息，例如您使用的网页搜索词语、访问的社交媒体页面url地址，以及您在使用我们服务时浏览或要求提供的其他信息和内容详情；<br>
    ● 有关您曾使用的移动应用（APP）和其他软件的信息，以及您曾经使用该等移动应用和软件的信息；<br>
    4.2.2.2 位置信息，指您开启设备定位功能并使用我们基于位置提供的相关服务时，收集的有关您位置的信息，包括：<br>
    ● 您通过具有定位功能的移动设备使用我们的服务时，通过GPS或WiFi等方式收集的您的地理位置信息；<br>
    ● 您或其他用户提供的包含您所处地理位置的实时信息，例如您提供的账户信息中包含的您所在地区信息；<br>
    ● 您可以通过关闭定位功能，停止对您的地理位置信息的收集。<br>
    4.3 信息使用范围：<br>
    4.3.1 在我们提供服务时，用于身份验证、客户服务、安全防范、诈骗监测、存档和备份用途，确保我们向您提供的产品和服务的安全性；<br>
    4.3.2 帮助我们设计新服务，改善我们现有服务；<br>
    4.3.3 使我们更加了解您如何接入和使用我们的服务，从而针对性地回应您的个性化需求，例如语言设定、位置设定、个性化的帮助服务和指示，或对您和其他用户做出其他方面的回应；<br>
    4.3.4 软件认证或管理软件升级；<br>
    4.3.5 让您参与有关我们产品和服务的调查。<br>
    4.3.6 为了让您有更好的体验、改善我们的服务或您同意的其他用途，在符合相关法律法规的前提下，我们可能将通过某一项服务所收集的信息，以汇集信息或者个性化的方式，用于我们的其他服务。例如，在您使用我们的一项服务时所收集的信息，可能在另一服务中用于向您提供特定内容，或向您展示与您相关的、非普遍推送的信息。如果我们在相关服务中提供了相应选项，您也可以授权我们将该服务所提供和储存的信息用于我们的其他服务。<br>
    4.4信息的共享<br>
    我们按以下方式或本政策中的其他说明共享有关您的信息：<br>
    4.4.1与需要获得此类信息以开展相关工作的供应商、顾问或其他服务提供商，例如第三方技术平台和帮助我们提供技术或分析的服务的供应商，以便帮助我们了解用户与服务之间的互动；<br>
    4.4.2我们认为所披露行为是符合任何适用的法律、法规、规章、条例或其他规定的；<br>
    4.4.3我们认为您在本平台的行为不符合我们服务协议或政策的规定，或我们认为要维护本公司的权利、财产和安全；<br>
    4.4.4我们与任何其他公司进行合并、出售公司资产、融资、并购等相关合作；<br>
    4.4.5经您允许或在您的指示下，包括我们将通过相关服务通知您，如您向我们提供此类信息，这些信息将以特定方式被共享。<br>
    4.5 信息的限制使用<br>
    4.5.1 如您不希望我们获取您的日志信息或位置信息，您可以通过关闭浏览器cookies功能或关闭设备定位功能的方式实现；<br>
    4.6个人资料的保护<br>
    4.6.1我们实施适当的措施来保护和保障您个人资料安全。我们尽力确保通过我们平台所搜集的任何个人资料免于受到与我们无关的任何第三者滋扰，保护与您相关的信息免遭丢失、盗窃、滥用或未经授权的访问、披露、更改和破坏。我们的员工、代表、代理可在必要时访问您的个人信息以满足本政策所述之目的。<br>
    4.6.2我们收集到的个人信息是储存在我们或服务提供商的服务器上。我们根据相关政策存储个人信息，并考虑和根据信息收集目的、本公司业务需求、信息最短存储期限的法规要求、与隐私相关的法律法规等内容制定信息存储周期和时间。<br>
    4.6.3尽管已实施上述技术和保安措施,但我们不能保证资料在互联网上的输送是绝对安全,因此我们不能绝对保证您通过本平台提供给我们的个人资料在所有时候都是安全的。对任何因未经授权而接触您个人资料所发生的事件我们一概不承担责任,由此产生或导致的任何损失或损害, 我们不负责赔偿。<br>
    五、免责声明<br>
    5.1 在法律规定的情况下，如司法机关、监管机构及其他相关机构提出要求，我公司有可能提供您的相关信息。<br>
    5.2 由于您将用户密码告知他人或与他人共享申请服务的，由此导致的任何个人资料和客户信息的泄露产生的所有责任由您个人承担。<br>
    5.3 您在与我们推介的第三方达成交易的过程中，您通过本服务提供的申请资料根据实际需求可能会一并提供给对应第三方，我们将以合理的勤勉、审慎义务督促第三方妥善保管相关信息，但由于第三方单方行为导致您的资料外泄的，我们不承担责任。<br>
    5.4 本网站尽全力处理本网站各项服务的安全、无误及不中断。但您已充分了解并同意，本网站可能因：<br>
    （1）黑客攻击、计算机病毒侵入或发作、因政府管制或不可抗力而造成的暂时性关闭等影响网络正常经营或其他不可抗力情形而造成的个人资料泄露、丢失、被盗用或被篡改等；<br>
    （2）公司、其他合作方或相关电信部门的互联网软硬件设备故障、失灵或认为操作疏忽而全部或部分中断、延迟、遗漏、产生误导或造成资料传输或存储上的错误；<br>
    （3）或由于与本网站链接的其他网站所造成您个人资料的泄露；<br>
    （4）您因其他非我们原因造成的损失;<br>
    （5）或地震、火灾、台风及其他各种不可抗力因素引起的停电、网络系统故障、电脑故障而造成您的损失。因此，我们对上述特殊情况造成的您的损失不承担任何明示或默示的保证责任。如您发现任何非法使用用户账号或安全漏洞的情况，请立即与我们联系。<br>
    5.5 您违反本协议、违反道德或法律的，侵犯他人权利（包括但不限于知识产权）的，我们不承担任何责任。同时，我们对任何第三方通过我们发送服务或包含在服务中的任何内容不承担责任。<br>
    5.6 对您、其他用户或任何第三方发布、存储或上传的任何内容或由该等内容导致的任何损失或损害，我们不承担责任。<br>
    5.7 对任何第三方通过我们可能对您造成的任何错误、中伤、诽谤、诬蔑、不作为、谬误、淫秽、色情或亵渎，我们不承担责任。<br>
    5.8 我们不保证服务一定能满足您的要求；不保证服务不会中断，也不保证服务的及时性、安全性、准确性。<br>
    5.9我们提供免费的贷款推荐服务，贷款过程中遇到的任何预先收费均为诈骗行为，请保持警惕避免损失。<br>
    5.10 我们可能同时为您及您的（交易）对手方提供服务，您同意对我们可能存在的该等行为予以明确豁免任何实际或潜在的利益冲突，并不得以此来主张我们在提供服务时存在法律上的瑕疵。<br>
    六、自备设备<br>
    6.1 您应当理解，您使用我们的服务需自行准备与相关服务有关的终端设备（如电脑、调制解调器等装置），并承担所需的费用（如电话费、上网费等费用）。<br>
    6.2 您理解并同意，您使用本服务时会耗用您的终端设备和带宽等资源。<br>
    七、第三方提供的产品或服务<br>
    您在接受第三方提供的产品或服务时，除遵守本协议约定外，还应遵守第三方的用户协议。我们和第三方对可能出现的纠纷在法律规定和约定的范围内各自承担责任。<br>
    八、协议的生效与变更<br>
    8.1 您使用我们的服务即视为您已阅读本协议并接受本协议的约束。<br>
    8.2 我们有权在必要时修改本协议条款。您可以在相关服务页面查阅最新版本的协议条款。<br>
    8.3 本协议条款变更后，如果您继续使用我们提供的软件或服务，即视为您已接受修改后的协议。<br>
    九、服务的变更、中断、终止<br>
    9.1 我们可能会对服务内容进行变更，也可能会中断、中止或终止服务。<br>
    9.2 如因升级的需要而需暂停网络服务、或调整服务内容，我们将尽可能在网站上进行通告。由于用户未能及时浏览通告而造成的损失，我们不承担任何责任。<br>
    9.3 您明确同意，我们保留根据实际情况随时调整我们提供的服务内容、种类和形式，或自行决定授权第三方向您提供原本我们提供的服务。因业务调整给您或其他用户造成的损失，我们不承担任何责任。<br>
    9.4 您理解并同意，我们有权自主决定经营策略。在我们发生合并、分立、收购、资产转让时，我们可向第三方转让本服务下相关资产；我们也可在单方通知您后，将本协议下部分或全部服务转交由第三方运营或履行。具体受让主体以我们通知的为准。<br>
    9.5 如发生下列任何一种情形，我们有权基于单方独立判断，在认为可能发生危害安全等情形时，不经通知而自行暂停、中断或终止向您提供本协议项下的全部或部分服务，甚至将注册资料封存、移除或删除，我们有权不经通知而中断或终止向您提供的服务，且无需对您或第三方承担任何责任，包括但不限于：<br>
    （1）根据法律规定您应提交真实信息，而您提供的个人资料不具有真实性、有效性或完整性、或与申请时信息不一致又未能提供合理证明；<br>
    （2）您违反相关法律法规或本协议的约定；<br>
    （3）按照法律规定或主管部门的要求；<br>
    （4）我们发现您的异常交易或有异议或有违法嫌疑时；<br>
    （5）我们认为您涉嫌洗钱、套取现金、传销、恶意使用他人身份信息或使用他人身份信息参与违法活动等情形；<br>
    （6）我们认为您已经违反本协议中规定的各类规则及精神；<br>
    （7）您在使用收费服务时未按规定向我们支付相应的费用；<br>
    （8） 我们有理由认为您违反国家法律或侵害他人利益的情形或出于安全的原因或其他必要的情形。<br>
    9.6 您有责任自行备份存储在本服务中的数据。如果您的服务被终止，我们可以从服务器上永久地删除您的数据,但法律法规另有规定的除外。服务终止后，我们没有义务向您返还数据。<br>
    十、管辖与法律适用<br>
    10.1 本协议的成立、生效、履行、解释及纠纷解决，适用中华人民共和国大陆地区法律（不包括冲突法）。<br>
    10.2 若您和我们之间发生任何纠纷或争议，首先应友好协商解决；协商不成的，双方同意向被告所在地有管辖权的法院提起诉讼。<br>
    10.3 本协议所有条款的标题仅为阅读方便，本身并无实际含义，不能作为本协议涵义解释的依据。<br>
    10.4 本协议条款无论因何种原因部分无效或不可执行，其余条款仍有效，对双方具有约束力。<br>
    十一、特别约定<br>
    11.1 您使用本服务的行为若有任何违反国家法律法规或侵犯任何第三方的合法权益的情形时，我们有权直接删除该等违反规定之信息，并可以暂停或终止向您提供服务。<br>
    11.2 若您利用我们的服务从事任何违法或侵权行为，由您自行承担全部责任，因此给我们或任何第三方造成任何损失，您应负责全额赔偿，并使我们免受由此产生的任何损害。<br>
    11.3 您同意我们通过重要页面的公告、通告、电子邮件以及常规信件的形式向您传送与我们服务有关的任何通知和通告。<br>
    11.4 您在本协议项下对我们的授权将视为对我们及我们关联公司的授权。我们及我们关联公司均可凭借您的授权及本协议约定执行相关操作。<br>
    11.5 本注服务协议中的标题仅为方便而设，不影响对于条款本身的解释。本服务协议最终解释权归我们所有。<br>
</div></body>

</html>